package learning.groovy.file

/**
 * Groovy文件操作
 */
class FileTest {

	static main(args) {
		//Groovy默认提供了String的execute()方法来运行一个线程，线程则可以按照线程的api使用闭包来访问。
		//下面是例子
		//启动一个线程
		def process = "ipconfig /all".execute()
		//调用线程的输入流，使用闭包输出每一行
		process.in.eachLine {println it}

		//文件IO提供了几个增强的Api，比如下面这个，这个实现打印README.txt的功能：
		def filePath="readme/README.txt"
		println filePath
		new File(filePath).eachLine{ println it }

		//文件IO提供了withReader/withWriter函数，可以通过闭包来处理资源，下面实现文件读入打印控制台：
		new File(filePath).withReader{ reader ->
			while(true){
				def line = reader.readLine()
				if(line!=null){
					println "line:"+line
				}else{
					break
				}
			}
		}

		//下面代码实现把str的内容写入文件foo.txt：
		String str="""
			Just a test for io in groovy.
			我是张三丰
			"""
		new File("./file/foo.txt").withWriter{ writer -> writer.write str }
		//注意：其中的Reader和Writer对象分别是BufferedReader和BufferedWriter对象。

		def number=0
		new File("./file/foo.txt").eachLine {line ->
			number++
			println "$number ：$line"
		}
	}
}
